package com.imdroid.carac.process;


/**
 * The base process
 * 
 */
public class BaseProcess {
	/**
	 * Split the string with the delimiter.
	 * 
	 * @param Source
	 *            The source string
	 * @param Delimiter
	 *            The delimiter
	 * @return The string array
	 */
	protected String[] split(String Source, String Delimiter) {
		int iCount, iPos, iLength;
		boolean bEnd; // 判断结束的符号是不是分割符号
		String sTemp; //
		String[] aSplit = null, t = null; // aSplit结果返回 t临时的

		sTemp = Source;
		iCount = 0;
		iLength = Delimiter.length();
		bEnd = sTemp.endsWith(Delimiter);

		for (;;) {
			iPos = sTemp.indexOf(Delimiter);
			if (iPos < 0) // 直到没有分割的字符串，就退出
				break;
			else {

				if (iCount > 0)
					t = aSplit; // 第一次，不用拷贝数组

				iCount++;
				aSplit = new String[iCount]; // 新的数组，

				if (iCount > 1) { // 不是第一次，拷贝数组
					for (int i = 0; i < t.length; i++)
						aSplit[i] = t[i];
				}
				aSplit[iCount - 1] = sTemp.substring(0, iPos);
				sTemp = sTemp.substring(iPos + iLength); // 取余下的字符串
			}
		}

		if ((sTemp.length() >= 0) || bEnd) { // 判断最后剩余的 String，如果最后的字符是分割符号
			if (iCount > 0)
				t = aSplit;
			iCount++;
			aSplit = new String[iCount];
			if (iCount > 1) {
				for (int i = 0; i < t.length; i++)
					aSplit[i] = t[i];
			}
			aSplit[iCount - 1] = sTemp;
		}
		return aSplit;
	}
}
